"""Definition of the Hermandad content type
"""

from zope.interface import implements, directlyProvides

from Products.Archetypes import atapi
from Products.ATContentTypes.content import base
from Products.ATContentTypes.content import schemata
from Products.ATContentTypes.content.base import ATCTContent, ATCTFolder
from Products.Archetypes import utils

from guegue.alcaldias import alcaldiasMessageFactory as _
from guegue.alcaldias.interfaces import IHermandad
from guegue.alcaldias.config import PROJECTNAME

HermandadSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((

    # -*- Your Archetypes field definitions here ... -*-
    atapi.StringField('title',
                searchable=1,
                isMetadata=0,
                accessor='Title',
                widget=atapi.StringWidget(label='Ciudad de Hermanamientos',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_title",
                                      description_msgid="help_entry_title",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('pais',
                searchable=1,
                required=0,
                widget=atapi.StringWidget(label='País',
                                      maxlength=100,
                                      size=30,
                                      label_msgid="label_entry_pais",
                                      description_msgid="help_entry_pais",
                                      i18n_domain="guegue.alcaldias",
                                      description='País al que pertenece la ciudad')),
    atapi.DateTimeField('fecha',
                searchable=0,
                required=0,
                widget=atapi.CalendarWidget(label='Fecha de Inicio',
                                      label_msgid="label_entry_fecha",
                                      show_hm = False,
                                      description_msgid="help_entry_fecha",
                                      i18n_domain="guegue.alcaldias",
                                      description='Fecha de inicio del Hermanamiento')),
    atapi.StringField('description',
                searchable=1,
                isMetadata=0,
                accessor='Description',
                widget=atapi.TextAreaWidget(label='Breve descripcion',
                                      label_msgid="label_entry_description",
                                      description_msgid="help_entry_description",
                                      i18n_domain="guegue.alcaldias",
                                      description='Entre una breve descripción del hermanamiento.')),
    atapi.FileField('adjunto',
              searchable=0,
              required=0,
              widget=atapi.FileWidget(label='Archivo adjunto',
                                label_msgid="label_entry_adjunto",
                                description_msgid="help_entry_adjunto",
                                i18n_domain="guegue.alcaldias",
                                description='Puede adjuntar un archivo relacionado al hermanamiento.')),
    atapi.StringField('proyecto',
                searchable=1,
                isMetadata=0,
                relationship = 'Proyecto',
                vocabulary="getProyectos",
                #widget=atapi.ReferenceWidget(
                widget=atapi.PicklistWidget(
                                label='Proyectos relacionados',
                                label_msgid="label_entry_proyecto",
                                description_msgid="help_entry_proyecto",
                                i18n_domain="guegue.alcaldias",
                                #addable = 1, 
                                description='Proyectos')),
    atapi.TextField('body',
              searchable=1,
              required=0,
              primary=1,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Detalles de Hermanamientos',
                                label_msgid="label_entry_body",
                                description_msgid="help_entry_body",
                                i18n_domain="guegue.alcaldias",
                                description="Detalles de Hermanamientos")),
))

# Set storage on fields copied from ATContentTypeSchema, making sure
# they work well with the python bridge properties.

#HermandadSchema['title'].storage = atapi.AnnotationStorage()
#HermandadSchema['description'].storage = atapi.AnnotationStorage()

schemata.finalizeATCTSchema(HermandadSchema, moveDiscussion=False)

class Hermandad(base.ATCTContent):
    """Tipo de datos para hermandades"""
    implements(IHermandad)

    def getProyectos(self):
        dl = utils.DisplayList()
        linklist = self.portal_catalog.searchResults(portal_type='Proyecto')
        for link in linklist:
            dl.add(link['id'], link['Title'])
        return dl

    portal_type = "Hermandad"
    schema = HermandadSchema

    #title = atapi.ATFieldProperty('title')
    #description = atapi.ATFieldProperty('description')

atapi.registerType(Hermandad, PROJECTNAME)
